Binary programs may be tested using automated testing methods. A purpose of testing binary programs may be to discover potential vulnerabilities in the binary programs. Some automated testing methods generate random inputs to test the binary programs. An example of the automated testing methods is fuzz testing. Automated testing of binary programs using random inputs may be a fast method of testing the binary programs. However, the automated testing programs may miss branches of the binary programs. Another automated testing of binary programs may include symbolic execution of the binary program. However, symbolic execution may be slow when compared to the fuzz testing. In addition, symbolic execution may be susceptible to path explosion. Path explosion may occur when the binary program includes too many paths to symbolically explore. Path explosion may result in an incomplete test of the binary program.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.